package controlador;

import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.swing.JFrame;
import javax.swing.JOptionPane;

import modelo.Conexion;

import vista.VCategoria;
import vista.VCliente;
import vista.VComprar;
import vista.VIngrediente;
import vista.VMenu;
import vista.VOrden;
import vista.VProducto;
import vista.VReporteExistenciaIngredientes;
import vista.VReportesIngredientesMasUsados;
import vista.VReporteVentasProductos;

public class CMenu implements ActionListener, ItemListener  {
	public VMenu vistaMenu;
	Conexion BD;
	public CMenu(VMenu vMenu)
	{
		vistaMenu=vMenu;
		try {
			BD = new Conexion();
		} catch (SQLException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public void actionPerformed(ActionEvent ae) {
		String arg =(String)ae.getActionCommand();
		if(arg.equals("Registrar Cliente")){
			VCliente vCliente;
			
				vCliente = new VCliente();
				vCliente.setLocation(50, 50);
				vCliente.setResizable(true);
				vCliente.setVisible(true);
				vCliente.getTxtCedula().requestFocus();
			
			
		}
		if (arg.equals("Registrar Producto")){
			VProducto vProducto = new VProducto();
			vProducto.setLocation(50, 50);
			vProducto.setResizable(true);
			vProducto.setVisible(true);
			vProducto.getTxtCodProducto().requestFocus();
			
		}
	if (arg.equals("Registrar Categoria")){
		VCategoria vCategoria= new VCategoria();
		vCategoria.setLocation(50, 50);
		vCategoria.setResizable(true);
		vCategoria.setVisible(true);
	}
	
	if (arg.equals("Registrar Ingrediente")){
		VIngrediente i = new VIngrediente();
		i.setLocation(50, 50);
		i.setResizable(true);
		i.setVisible(true);
		
	}
	if (arg.equals("Comprar Ingrediente")){
		VComprar vComprar = new VComprar();
		vComprar.setLocation(50, 50);
		vComprar.setResizable(true);
		vComprar.setVisible(true);
	}
	if (arg.equals("Registrar Orden")){
		VOrden vOrden = new VOrden();
		vOrden.setLocation(50, 50);
		vOrden.setResizable(true);
		vOrden.setVisible(true);
	}
	 if (arg.equals("Cantidad disponibles de ingredientes")){
		     ResultSet rs = null;
		    VReporteExistenciaIngredientes vExistencia=new VReporteExistenciaIngredientes();
			try {
				rs=BD.obtenerIngredientes();
				if(rs==null)
					JOptionPane.showMessageDialog(new JFrame(), 
							"La tabla esta vacia","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
				else{
				vExistencia = new VReporteExistenciaIngredientes("Cantidad Existente de cada Ingrediente",rs);
				vExistencia.setLocation(50, 50);
				vExistencia.setResizable(true);
				vExistencia.setSize(400,300);
				vExistencia.setVisible(true);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			vExistencia.setLocation(50, 50);
			vExistencia.setResizable(true);
			vExistencia.setSize(400,300);
			vExistencia.setVisible(true);
		
	     }
	 if (arg.equals("Prod. Vendidos Ordenados por Monto Ascendentemente")){
	    	ResultSet rs = null;
		    VReporteVentasProductos vVentas=new VReporteVentasProductos();
			try {
				
				rs=BD.obtenerProdMontoAsc();
				if(rs==null)
					JOptionPane.showMessageDialog(new JFrame(), 
							"La tabla esta vacia","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
				else{
				vVentas = new VReporteVentasProductos("Productos Vendidos Ordenado Ascendentemente por monto",rs);
				vVentas.setLocation(50, 50);
				vVentas.setResizable(true);
				vVentas.setSize(400,300);
				vVentas.setVisible(true);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		
	     }
	 if (arg.equals("Prod. Vendidos Ordenados por Monto Descendentemente")){
	    	ResultSet rs = null;
		    VReporteVentasProductos vVentas=new VReporteVentasProductos();
			try {
				rs=BD.obtenerProdMontoDesc();
				if(rs==null)
					JOptionPane.showMessageDialog(new JFrame(), 
							"La tabla esta vacia","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
				else{
				vVentas = new VReporteVentasProductos("Productos Vendidos Ordenado Descendentemente por monto",rs);
				vVentas.setLocation(50, 50);
				vVentas.setResizable(true);
				vVentas.setSize(400,300);
				vVentas.setVisible(true);}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		
	     }
	 if (arg.equals("Prod. Vendidos Ordenados por Cantidad Ascendentemente")){
	    	ResultSet rs = null;
		    VReporteVentasProductos vVentas=new VReporteVentasProductos();
			try {
				rs=BD.obtenerProdCantidadAsc();
				if(rs==null)
					JOptionPane.showMessageDialog(new JFrame(), 
							"La tabla esta vacia","Producto", 
							JOptionPane.INFORMATION_MESSAGE);
				else{
				vVentas = new VReporteVentasProductos("Productos Vendidos Ordenado Ascendentemente por cantidad",rs);
				vVentas.setLocation(50, 50);
				vVentas.setResizable(true);
				vVentas.setSize(400,300);
				vVentas.setVisible(true);
				}
			} catch (SQLException e) {
				e.printStackTrace();
			}
			
		
	     }
	 if (arg.equals("Prod. Vendidos Ordenados por Cantidad Descendentemente")){
	    	ResultSet rs = null;
		    VReporteVentasProductos vVentas=new VReporteVentasProductos();
			try {
				rs=BD.obtenerProdVendCantidadDesc();
				vVentas = new VReporteVentasProductos("Productos Vendidos Ordenado Descendentemente por cantidad",rs);
				vVentas.setLocation(50, 50);
				vVentas.setResizable(true);
				vVentas.setSize(400,300);
				vVentas.setVisible(true);
			} catch (SQLException e){
				e.printStackTrace();
			}
			
		
	     }
	 if (arg.equals("Ingredientes Mas Usados")){
	    	ResultSet rs1 = null;
			VReportesIngredientesMasUsados vVentas=new VReportesIngredientesMasUsados();
			try {
				rs1=BD.obtenerIngredientesMasUsados();
				vVentas = new VReportesIngredientesMasUsados("Productos Vendidos Ordenado Descendentemente por cantidad",rs1);
				vVentas.setLocation(50, 50);
				vVentas.setResizable(true);
				vVentas.setSize(400,300);
				vVentas.setVisible(true);
			} catch (SQLException e){
				e.printStackTrace();
			}
			
		
	     }
	    if (arg.equals("Salir")){
			int opcion = JOptionPane.showConfirmDialog(new JFrame(),"Desea salir del sistema?",
				     "Mensaje de Confirmacion",JOptionPane.YES_NO_OPTION,
				     JOptionPane.QUESTION_MESSAGE);
		if (opcion == JOptionPane.YES_OPTION)
		{
			vistaMenu.dispose();
			System.exit(0);
		}
		}
	}
	public void windowClosing(WindowEvent e) {
		Window w = (Window) e.getSource();
		w.setVisible(false);
		w.dispose();
		System.out.println("Se cerro la Aplicacion!!!");
		System.exit(0);
	}

	public void itemStateChanged(ItemEvent arg0) {
		vistaMenu.repaint();
	}	
	
	
}
